/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.commons.net.ftp; import java.text.DateFormatSymbols; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; import junit.framework.TestCase; public class FTPClientConfigTest extends TestCase { /* * Class under test for void FTPClientConfig(String) */ public void testFTPClientConfigString() { FTPClientConfig config = new FTPClientConfig(FTPClientConfig.SYST_VMS); assertEquals(FTPClientConfig.SYST_VMS, config.getServerSystemKey()); assertNull(config.getDefaultDateFormatStr()); assertNull(config.getRecentDateFormatStr()); assertNull(config.getShortMonthNames()); assertNull(config.getServerTimeZoneId()); assertNull(config.getServerLanguageCode()); } String A = "A"; String B = "B"; String C = "C"; String D = "D"; String E = "E"; String F = "F"; /* * Class under test for void FTPClientConfig(String, String, String, String, String, String) */ public void testFTPClientConfigStringStringStringStringStringString() { FTPClientConfig conf = new FTPClientConfig(A,B,C,D,E,F); assertEquals("A", conf.getServerSystemKey()); assertEquals("B", conf.getDefaultDateFormatStr()); assertEquals("C", conf.getRecentDateFormatStr()); assertEquals("E", conf.getShortMonthNames()); assertEquals("F", conf.getServerTimeZoneId()); assertEquals("D", conf.getServerLanguageCode()); } String badDelim = "jan,feb,mar,apr,may,jun,jul,aug.sep,oct,nov,dec"; String tooLong = "jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec|jan"; String tooShort = "jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov"; String fakeLang = "abc|def|ghi|jkl|mno|pqr|stu|vwx|yza|bcd|efg|hij"; public void testSetShortMonthNames() { } public void testGetServerLanguageCode() { } public void testLookupDateFormatSymbols() { DateFormatSymbols dfs1 = null; DateFormatSymbols dfs2 = null; DateFormatSymbols dfs3 = null; DateFormatSymbols dfs4 = null; try { dfs1 = FTPClientConfig.lookupDateFormatSymbols("fr"); } catch (IllegalArgumentException e){ fail("french"); } try { dfs2 = FTPClientConfig.lookupDateFormatSymbols("sq"); } catch (IllegalArgumentException e){ fail("albanian"); } try { dfs3 = FTPClientConfig.lookupDateFormatSymbols("ru"); } catch (IllegalArgumentException e){ fail("unusupported.default.to.en"); } try { dfs4 = FTPClientConfig.lookupDateFormatSymbols(fakeLang); } catch (IllegalArgumentException e){ fail("not.language.code.but.defaults"); } assertEquals(dfs3,dfs4); SimpleDateFormat sdf1 = new SimpleDateFormat("d MMM yyyy", dfs1); SimpleDateFormat sdf2 = new SimpleDateFormat("MMM dd, yyyy", dfs2); SimpleDateFormat sdf3 = new SimpleDateFormat("MMM dd, yyyy", dfs3); Date d1 = null; Date d2 = null; Date d3 = null; try { d1 = sdf1.parse("31 d\u00e9c 2004"); } catch (ParseException px) { fail("failed.to.parse.french"); } try { d2 = sdf2.parse("dhj 31, 2004"); } catch (ParseException px) { fail("failed.to.parse.albanian"); } try { d3 = sdf3.parse("DEC 31, 2004"); } catch (ParseException px) { fail("failed.to.parse.'russian'"); } assertEquals("different.parser.same.date", d1, d2); assertEquals("different.parser.same.date", d1, d3); } public void testGetDateFormatSymbols() { try { FTPClientConfig.getDateFormatSymbols(badDelim); fail("bad delimiter"); } catch (IllegalArgumentException e){ // should have failed } try { FTPClientConfig.getDateFormatSymbols(tooLong); fail("more than 12 months"); } catch (IllegalArgumentException e){ // should have failed } try { FTPClientConfig.getDateFormatSymbols(tooShort); fail("fewer than 12 months"); } catch (IllegalArgumentException e){ // should have failed } DateFormatSymbols dfs2 = null; try { dfs2 = FTPClientConfig.getDateFormatSymbols(fakeLang); } catch (Exception e){ fail("rejected valid short month string"); } SimpleDateFormat sdf1 = new SimpleDateFormat("MMM dd, yyyy", Locale.ENGLISH); SimpleDateFormat sdf2 = new SimpleDateFormat("MMM dd, yyyy", dfs2); Date d1 = null; Date d2 = null; try { d1 = sdf1.parse("dec 31, 2004"); } catch (ParseException px) { fail("failed.to.parse.std"); } try { d2 = sdf2.parse("hij 31, 2004"); } catch (ParseException px) { fail("failed.to.parse.weird"); } assertEquals("different.parser.same.date",d1, d2); try { d2 = sdf1.parse("hij 31, 2004"); fail("should.have.failed.to.parse.weird"); } catch (ParseException px) { } try { d2 = sdf2.parse("dec 31, 2004"); fail("should.have.failed.to.parse.standard"); } catch (ParseException px) { } } }